package io.starteos.api.eos4j;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateAndTimeUtils {
	/**
	 * 
	 * @Description： 获取当前日期Unix时间
	 * 
	 * @return
	 * @author:
	 * @since: 2016年11月21日 下午6:37:27
	 */
	public static int getDateForMsec() {
		int msec = (int) (System.currentTimeMillis()/1000L);
		return msec;
	}
	/**
	 * 获取当前系统时间
	 * 
	 * @return
	 */
	public static String getCurrentDate() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return df.format(System.currentTimeMillis());

	}
	
	/**
	 * 获取当前系统时间纯数字
	 * 
	 * @return
	 */
	public static String getCurrentDateNum() {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
		return df.format(System.currentTimeMillis());

	}
	
	/**
	 * 获取当前系统时间纯数字
	 * 
	 * @return
	 */
	public static String getCurrentDateNumWithOutTime() {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
		return df.format(System.currentTimeMillis());

	}
	/**
	 * 获取今天日期不包含小时、分、秒
	 * 
	 * @return
	 */
	public static String getCurrentDateWithOutTime() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		return df.format(System.currentTimeMillis());

	}
	
	/**
	 * 
	 * @Description： 转unix时间戳为日期保留到秒
	 * @param timestampString
	 * @return
	 * @author:  
	 * @since: 2017年1月11日 下午5:07:43
	 */
	public static String TimeStamp2Date(String timestampString){  
	    Long timestamp = Long.parseLong(timestampString)*1000;  
	    String date = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date(timestamp));  
	    return date;  
	} 
	
	public static String TimeStamp2Date(Long timestamp){  
	    String date = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date(timestamp));  
	    return date;  
	} 
	/**
	 * 
	 * @Description： 转unix时间戳为日期保留到天
	 * @param timestampString
	 * @return
	 * @author:  
	 * @since: 2017年1月11日 下午5:07:43
	 */
	public static String TimeStamp2Date2(String timestampString){  
	    Long timestamp = Long.parseLong(timestampString)*1000;  
	    String date = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date(timestamp));  
	    return date;  
	}
	
	/**
	 * 
	 * @Description： 获取传入月份第一天
	 * @param date
	 * @param format
	 * @return
	 * @throws Exception
	 * @author:  
	 * @since: 2017年7月26日 下午4:42:35
	 */
	public static String getMonthFirst(String date, String format) throws Exception{
		 SimpleDateFormat sf = new SimpleDateFormat(format);
		 Calendar calendar = Calendar.getInstance();
		 calendar.setTime(sf.parse(date));
		 calendar.set(Calendar.DAY_OF_MONTH,1);
		 calendar.set(Calendar.HOUR_OF_DAY, 0);
	     calendar.set(Calendar.MINUTE, 0);
	     calendar.set(Calendar.SECOND, 0);
	     return sf.format(calendar.getTime());
	}
	/**
	 * 
	 * @Description： 获取传入日期月份最后一天
	 * @param date
	 * @param format
	 * @return
	 * @throws Exception
	 * @author:  
	 * @since: 2017年7月26日 下午4:42:47
	 */
	public static String getMonthLast(String date, String format) throws Exception{
		 SimpleDateFormat sf = new SimpleDateFormat(format);
		 Calendar calendar = Calendar.getInstance();
		 calendar.setTime(sf.parse(date));
		 calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE)); 
		 calendar.set(Calendar.HOUR_OF_DAY, 23);
	     calendar.set(Calendar.MINUTE, 59);
	     calendar.set(Calendar.SECOND, 59);
	     return sf.format(calendar.getTime());
	}
	 /**
     * 日期格式字符串转换成Unix时间戳
     *
     * @param dateStr 字符串日期
     * @param format   如：yyyy-MM-dd HH:mm:ss
     *
     * @return
     */
    public static String Date2TimeStamp(String dateStr, String format) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return String.valueOf(sdf.parse(dateStr).getTime() / 1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}
